package base;

/**
 * Java编译器是通过先检查代码中泛型的类型，然后在进行类型擦除，再进行编译。
 *
 */
public class TestField {
    public static void main(String[] args) {
        // final可以修饰局部变量
        final int b = 1;
        System.out.println(b);

        // 执行顺序
        /**
         * father类静态代码块调用。。。。静态常量a=1
         * 子类静态代码块调用。。。。静态常量b=2
         * 父类普通代码块调用。。。
         * 父类构造函数调用
         * 子类代码块调用。。。。
         * 子类构造器调用。。。
         */
        Son son = new Son();
    }
}
class Father {
    static int a = 1;
    static {
        System.out.println("father类静态代码块调用。。。。静态常量a=" + a);
    }
    Father() {
        System.out.println("父类构造函数调用");
    }
    {
        System.out.println("父类普通代码块调用。。。");
    }

}
class Son {
    static int b = 2;
    static {
        System.out.println("子类静态代码块调用。。。。静态常量b=" + b);
    }
    Son() {
        System.out.println("子类构造器调用。。。");
    }
    {
        System.out.println("子类代码块调用。。。。");
    }
}
